const StringUtil = require('./stringUtil');
const shell = require('shelljs');
const path = require('path');
const config = require("../config");

module.exports = {
    /**
     * 重定向到登录页面
     * @param ctx
     */
    redir: function (ctx) {
        const url = `${config.passportLogin}?ReturnUrl=${encodeURIComponent(ctx.href)}`
        ctx.redirect(url);
    },

    /**
     * 跳转到错误页
     * @param ctx
     * @param errorType 错误码 1-404，2-没权限，3-不是设计师，4-账号无效
     */
    redirError: function (ctx, errorType = 1) {
        console.log("redirError function is empty")
    },

    /**
     * 获得昨天时间
     */
    getYesterdayTime() {
        let nowDate = new Date();
        nowDate.setDate(nowDate.getDate() - 1);
        let timeStr = StringUtil.formatDate(nowDate, 'YYYY-MM-DD');
        return timeStr;
    },
    /**
     * 根据路径获得去掉域名和参数的path
     * @param url
     * @returns {*}
     */
    getPathName: function (url) {
        let result = url;
        if (url) {
            let index = result.indexOf('?');
            if (index >= 0) {
                result = result.substring(0, index);
            }
            index = result.indexOf('/');
            result = result.substring(index, result.length);
        }
        return result;
    },
    /**
     * 通过后端返回的状态码判断是否登录，是否有权限等
     * @param ctx
     * @param data data.code = 200 ok
     *              401	未登录
     *              405	没有操作权限（设计师账号越界操作）
     *              406 不是设计师账号
     *              407 设计师账号无效（被禁）
     *
     */
    processAuth: function (ctx, data) {
        console.log("processAuth function is empty")
    },

    /**
     * 渲染错误页面
     * @param ctx
     * @returns {Promise<void>}
     */
    renderError: async function (ctx) {
        // console.log("renderError function is empty")
        await ctx.render('404', {
            title: '错误页面',
            staticUrl: config.staticUrl,
            version: config.version,
        });
    },
    /**
     * 递归查找存在.cone文件的目录
     * @returns 返回路径
     */
    getWorkspacePath: () => {
        let currentPath = process.cwd()
        const findCone = (p) => {
            if (shell.test('-f', `${p}${path.sep}.cone`) || '' === p || path.sep === p) {
                return p
            }
            return findCone(p.substring(0, p.lastIndexOf(path.sep)))
        }
        return findCone(currentPath)
    }
}